package web

import (
	"fmt"
	"github.com/gookit/validate"
	"ksd-social-api/commons/base/controller"
	"ksd-social-api/modules/user/contants"
	"ksd-social-api/modules/user/model/context"
	"ksd-social-api/modules/user/service"
)

type UserController struct {
	controller.BaseController
}

var userService = service.UserService{}

/**
 * @author feige
 * @date 2023-10-10
 * @version 1.0
 * @desc  查询用户明细
 */
func (web *UserController) GetUserInfo() {
	// 1： 获取当前登录的用户id，从token中获取的
	userId := web.GetUserId()
	// 2: 根据用户id查询用户西信息
	userVo := userService.GetUserInfo(userId)
	// 3: 返回，因为查询没有错误信息，所以只有正确返回
	web.Ok(userVo)
}

/**
 * @author feige
 * @date 2023-10-10
 * @version 1.0
 * @desc  修改用户密码
 */
func (web *UserController) UpdateUserPwd() {
	// 1: 开始绑定参数
	pwdContext := context.SysUserPwdContext{}
	web.BindJSON(&pwdContext)
	// 3: 对登录用户信息进行验证
	validation := validate.Struct(pwdContext)
	if !validation.Validate() {
		web.FailWithValidatorData(validation)
		return
	}
	// 4: 判断两次输入的密码是否一致
	if pwdContext.ConfirmPassword != pwdContext.Password {
		web.FailCodeMsg(contants.USER_STATUS, contants.USER_UPATE_PWD_NO_SAME)
		return
	}

	// 5: 如果一致就开始修改用户的密码
	userId := web.GetUserId()
	// 6: 执行修改密码
	flag, err := userService.UpdateUserPassword(userId, pwdContext.Password)
	if flag {
		web.Ok("修改密码成功")
	} else {
		web.FailData(fmt.Sprintf("修改密码失败，错误原因是：%s", err.Error()))
	}
}
